Matemática Mental


Data Science

Linux


Python Fundamentos para Análise de Dados


Big Data Fundamentos 2.0


Big Data Analytics com R e Microsoft Azure Machine


Big Data Real-Time Analytics com Python e Spark

Links Úteis

Informações Relevantes

  • Apache Spark
    1. Engine principal de processamento de Big Data. Funciona como hadoop
    2. O Spark não possui um sistema de armazenamento como o Hadoop MapReduce. Logo, podemos usar o Hadoop HDFS junto com o Spark
    3. Benefícios: Fácil de usar, Veloz,Engine de uso geral para várias atividades
    4. Apache Spark é uma plataforma de computação em cluster(conjunto de computadores), criado para ser veloz e de uso geral, sendo ideal para processamenteo iterativo e processamento de streaming de dados(fluxo contínuo de dados)
    5. Spark realizar computação em memória(o q ajuda a explicar sua velocidade), mas tb é eficiente quando executa aplicações em disco.
    6. Pq aprender: cada vez mais utlizaddo por empresas interessadas em analisar dados em tempo real; tecnologia bastante utilizada; suporte cada vez maior; crescente demanda por profissionais que saibam processar dados em tempo real
    7. Utilizações: detecção de fraudes em tempo real; detecçaõ de invasão de redes; campanhas de marketing e propagandas em tempo real; análise de sentimento em redes sociais; pode ser usado como ferramente ETL
    8. Suporte 4 linguagens: R, Java , Scala e Python. Pyhton é a ferramenta ideal para trabalhar com Spark
    9. Streming de dados: são dados gerados continuamente por milhares de fontes de dados, que geralmente enviam os registros de dados simultaneamente, em tamanhos pequenos(na ordem de kilobytes). Os dados em streaming devem ser processados de maneira sequencial e incremental por registro e usados para uma ampla variedade de análises de dados, como agregações, correlações filtragem e amostragem.
    10. O Apache Spark foi a primeira plataforma de Big Data a integrar processamento de dados em batch, streaming e computação distribuída em um único framework.
    11. Spark é excelente para trabalhos iterativos(Machine Learnig)
    12. Shell para exploração ad-hoc(abre um terminal, digita comando e acessa os dados quase em tempo real)
    13. Regra de Ouro: conjunto de dados < 1 TB: Melhor usar Spark; cc : Hadoop/Spark
    14. Quando usar o Spark? :
    15. Integração de dados(buscar dados de um banco relacional e levar p o hadoop) e ETL
    16. Análises Interativas: Abrir um terminal no Spark e executar uma query direto nos dados.
    17. Computação em Batch de alta Performance: coleta os dados, armazena e preocessa mais tarde
    18. Análises Avançadas de Machine Learning
    19. Processamento de Dados em Tempo Real
    20. Características do Spark: Realizaa operações de MapReduce; Pode utilizar o HDFS; Permite construir um workflow de Analytics; Utiliza a memória do computador de forma diferente e eficiente; Veloz, flexível e gratuito

    Apache Spark SQL

    • Spark Session: conector para acessa o API spark-sql.
    • SQL Context:Encapsula todas a funcionalidades relacionadas ao Apache Spark; é possível criar um SQL-context a partir do Spark-context;
    • Spark-Context: é para entrar no contexto de cluster e executar a aplicação
    • SQL-context: Necessária a criação para acessar o API Spark-sql
    • Exemplo de string de conexão: jdbc:mysql://localhost:3306/test
    • Tabelas Temporáriais: Estruturas simples, mas poderosas. Uma query aplicada em tabela temporária retorna outro dataframe.O uso de Tabelas Temporárias se dá quando queremos utilizar SQL no padrão ANSI. Se não for possível, podemos usar SQL no padrão do SPARK, que tem sintaxe diferente. O uso de TT tem a limitação da memória, pois os dados são carregados na memória.

    Passo-a-Passo

  • Preparando o Ambiente Python e Spark
    1. Endereço oficial Python: www.python.org
    2. Anaconda traz o interpretador padrão python + vários pacotes. Endereço: anaconda.org
    3. O endereço: spark.apach.org encontra-se o Spark . Na opção 2 deixar marcado "Pre-built for Apach Hadoop 2.7 and later"
    4. O Spark foi desenvolvido na linguagem Scala. Essa linguagem requer uma JVM(Java Virtual Machine). Econtra-se no endereço:(a versão utilizada foi a kit 11.0.3) https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
    5. Uma vez iniciado o PySpark, é criado um Spark Context, que nos permite criar RDD's e Dataframes e realizar transformações e ações. Cada operação Spark gera um job que então é executado ou agendado para ser executado ao longo do cluster de computadores ou localmente em nossa máquina.
    6. RDD: estrutura de dados do Spark
    7. Site Oficial da Linguagem Python https://www.python.org/ Python Brasil http://wiki.python.org.br/ Python Package Index https://pypi.python.org/pypi Documentação Anaconda https://docs.continuum.io/ Beaker Notebookhttp://beakernotebook.com/ PyScience Brasil http://pyscience-brasil.wikidot.com/ Anaconda Download https://repo.continuum.io/archive/ Spark Download http://spark.apache.org/downloads.html Apache Spark http://spark.apache.org/Winutils https://github.com/steveloughran/winutils Java JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html Spark Archive https://archive.apache.org/dist/spark/

      Instalando o Java. Dicas: 1) O diretório não deve ter espaço no nome. 2)Criar uma pasta exclusiva em C:\ para o Java

      O Apache Spark não tem um instalador. Simplesmente descompacta o arquivo e configura-se as variáveis de ambiente. Descompactar duas vezes. O primeiro arquivo é com extensão tgz(é arquivo compactado). A extensão .tar é o arquivo comprimido. Mover o arquivo descompactado para a raiz C: para facilitar a configuração das variáveis de ambiente.

      Configuração das Variáveis de ambiente: Variáveis de ambiente indica para o sistema operacional onde se encontra os programas de interesse.

    8. O Spark não foi feito para Windows, por isso esses passos.
    9. 1) Abrir o painel das variáveis de ambiente

      2)No campo de variáveis de sistema, criar nova variável de ambiente

    10. # JDK # Inserir as variáveis JAVA_HOME e PATH : JAVA_HOME = C:\Java\jdk-11.0.3 PATH = C:\Java\jdk-11.0.3\bin (tem q mover o JAVA para cima!!)
    11. Ajustando a versão do Java JDK

      1) o JVM do java permite que o java seja uma linguagem de programação multiplataforma.
      2) A instalação do java-jdk é necessária porque o Spark foi desenvolvido em linguagem Scala, a qual utiliza o JVM para sua execução.
      3) A instalação da JVM se dá com a instalação do JAVA-JDK
      4) Até 07/2019 era o Java 11 que é usada, devido a sua compatibilidade com o Spark.
      5) Há um bug no uso do Spark SQL com o Java 11. Com isso, é necessário usar o Java JDK 1.8 . CONFIGURAÇÃO necessária.
      6) Basta alterar a variável de ambiente. 
      7) Verificar no futuro próximo se a próxima versão do Spark traga suporte para o Java 11.
      
      
      

      Instalar as variáveis para o Spark:

          # Spark
      SPARK_HOME = C:\spark
      PATH = C:\spark\bin
      PYSPARK_DRIVER_PYTHON = jupyter
      PYSPARK_DRIVER_PYTHON_OPTS = notebook
      PYSPARK_PYTHON = python3
      
      # Wintools 64 bits:
      
      https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
      

      Baixar o arquivo. Criar em C: as pastas Hadoop e bin. Inserir em bin o executável baixado

      Ajusta a vairável HADOOP_HOME:C:\Hadoop. Além disso tenho q adicionar o diretório bin na variável de ambiente path C:\Hadoop\bin

      # Wintools 32 bits: https://drive.google.com/file/d/0B4PlPwU6yGTNT2FBdl9nTGNGOFk/view # Permissão Crie o diretório C:\tmp\hive Abra o prompt e digite: C:\Hadoop\bin\winutils.exe chmod -R 777 C:\tmp\hive

      Após realizado os passos, abir o prompt e testar os comandos: java -version ; python ; e spark-shell

      Como não queremos progamar em scala, saimos do prompt com :q, cls e digita pyspark

    Manipulação de Dados comPython:Numpy

    Informações Relevantes

    • Numpy: biblioteca matemática para linguagem Python
    • O uso do Numpy agiliza o processamento dos dados relativamente a outros métodos disponíveis em Python
    • Python: linguagem completa. Eficiente na etapa de pré-processamento(aquele que é realizado antes da criação dos modelos preditivos). Outra vantagem, é que todo o processo do início ao fim pode ser realizado em Python (desde a concepção do problema até a publicação de uma aplicação analítica construída, por exe, para o ambiente web ). Essa situação fica limitada no R.
    • Em PythonTUDO é objeto. Os objetos tem características e podem executar ações.A característica pode ser resgatada via atributo. Já para aplicar uma ação, uso um método. Os métodos são chamados com o uso de parênteses ().
    • PyData Stack: Conjunto de pacotes Python específicos para ciência de dados. Numpy é a base para a maioria dos pacotes.
    • NumPy: oferece a base para a manipulação de estruturas de dados. Usado conjuntamente com outros pacotes. O objetivo principal é ser usado como conteiner para os dados para serem usados/manipulados no processo de análise. Os arrays do Numpy são muito eficientes!!
    • Pandas I: Pacote de análise de dados de alta performance. Amplamente adotada para manipulação de dados. No processo de análise frequentemente necessita-se de dataframes. Isso é obtido via Pandas, fornecendo possibilidades de fatiar, manipular os dados muito facilmente.
    • Uma plataforma de manipulaçaõ de dadospode ser obtida com a união das bibliotecas Numpy e Pandas

    Manipulação de Dados comPython:Pandas

    Informações Relevantes

    • Pandas: Excel para programação. Muitas funções do excel podem ser realizadas com essa biblioteca
    • Pandas: Permite trabalhar com séries temporais e dataframes contendo qualquer tipo de dado, executando inúmeras operações com esses dados
    • Posso usar o Pandas para transformar um conjunto de dados no formato JSON para um dataframe. Com isso, consegue-se manipular os dados facilmente.
    • Os objetos criados com Numpy e Pandas são semelhantes. A diferença é que usa-se o Numpy para computação numérica(só se tem valores numéricos no conjunto de dados), enquanto o Pandas é usado de forma mais ampla, quando tenho um conjunto de dados muito diversificado(strings, valores NA,...)
    • Para instalar um pacote Python diretamente do Jupyter Notebook, usar a exclamação antes do comando pip. Exemplo: !pip install xarray
    • Pivotear um conjunto de dados é modificá-lo em diferentes perspectivas!
    • DICA:Ao manipular dados em Python, consultar a página https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
    • DICA:Procurar entender o OBJETO que se está trabalhando em Python. Disso, verfica-se na documentação os atributos e métodos que são de interesse ao manipular os dados.
    •     
      # Se precisar instalar uma versão específica o pandas, use:
      # !pip uninstall pandas
      # !pip install pandas == 0.23.4      
      

    Python MapReduecFilter_ListComprehensionLambda

    Business Analytics


    Engenharia de Dadoscom Hadoop e Spark

    Informações Iniciais

    • O Apache Hadoopé um framework para armazenamento e processamento de grandes quantidades de dados distribuidos em um cluster de computadores.
    • O Apache Hadoopé um framework de código aberto, criado em linguagem Java, utilizado para armazenamento e processamento de grandes quantidades de dados distribuidos em um cluster de computadores. Os elementos chaves são: Modelo de programação MapReduce e o sistema de arquivos HDFS
    • HDFS:sistema de arquivos criado para armazenamento de Big Data de forma distribuida em um cluster de computadores. Um sistema de arquivos possui um conjunto de funcionalidades, tais como armazenamento, organização.Um sistema de arquivos nada mais é do que um conjunto de estruturas lógicas e de rotinas que permitem ao sistema operacional controla o acesso ao HD.
    • Hadoop: não é um banco de dados. Hadoop é um framework composto de uma camada de sistema de arquivos distribuído(HDFS) e uma camada de programação em paralelo(MapReduce) além do gerenciador de recursos(Yarm). Tanto o Hadoop quanto um banco de dados relacionais sirvam para armazenar dados, eles o fazem de maneira distinta, com propósitos diferentes. Para dados estruturados ou não estruturados, usamos o Apache Hadoop.
    • Banco de dados relacionais(RDBMS): é uma aplicação que permite armazenar e obter de volta os dados com a máxima eficiência possível. O que o torna relacional é a maneira como os dados são armazenados e organizados no banco de dados. Em um banco de dados relacional todos os dados são guardados em tabelas(conjunto de linhas e colunas). São os relacionamentos entre as tabelas que as tornam relacionais.
    • SGBD: Sistema gerenciador de banco de dados. É um software que controla um ou mais bancos de dados. eX: Oracle
    • Banco de dados relacionais: são indicados para aplicações que lidam com uma grande quantidade de consultas complexas, análide de dados de rotina
  • Razões para usar Hadoop
    1. Open Source
    2. Hadoop ofecece o framework mais completo para armazenamento e processamento de Big Data
    3. A líder mundial em banco de dados relacionais, a Oracle, oferece soluções de Big Data Analytics com Hadoop.
    4. Microsoft oferece soluções corporativas em nuvem, com Hadoop
    5. Um cientista de dados deve conhecer bem o paradigma de processamento MapReduce.

    Instalando o Ecossistema Hadoop

    • Softwares: Virtual Box( www.virtualbox.org)
    • Sistema Operacional: Linux( www.redhat.org) . Usou-se o CentOs(cópia gratuita do redhat). Escolher o DVD ISO

    Machine Learnig

    Python Fundamentospara Análise de Dados

    Visualização de Dados e Design de Dashboards

    Preparação para Carreira de Cientista de Dados

    R é um pacote estatístico com inúmeros tutoriais.



    Graduação UNB

    Curso: Estatística



    Programação


    SCS

    Objetivo: criar no R página HTML interativa com dropdown possibilitando seleção de todo o conjunto de serviços/países/estados .Estudar a viabilidade disso



    ©Ricardo Felippe